package it.csi.finregio.finreges.client.services.mantab;

import it.crp.crparch.web.struts.service.WebServiceException;
import it.crp.exception.ServiceException;
import it.crp.logger.PrdLoggerFactory;
import it.csi.finregio.finreges.client.ServiceLocator;
import it.csi.finregio.finreges.dto.Direzione;
import it.csi.finregio.finreges.dto.Ente;
import it.csi.finregio.finreges.dto.Settore;
import it.csi.finregio.finreges.presentation.form.SchedaForm;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;

public class ModificaSettoreService extends AbstractManutenzioneTabelleService {
private transient Logger log = PrdLoggerFactory.getInstance()
		.getLogger("finreges");
	public Object execute(ActionForm form) throws WebServiceException {
		try {
			SchedaForm sf = (SchedaForm) form;
			Ente ente = new Ente();
			ente.setIdEnte(sf.getIdEnte());
			Direzione direzione = new ServiceLocator().getFinRegioService().getDirezioneByProgressivo(sf.getProgressivoDirezione());
			Settore settore = new ServiceLocator().getFinRegioService().getSettoreByProgressivo(sf.getProgressivoSettore());
			settore.setDescrizione(sf.getDescrizioneSettore());
			settore.setEnte(ente);
			settore.setDirezione(direzione);
			getManutenzioneTabelleService().updateSettore(settore);
			return null;
		} catch (ServiceException e) {
			log.error("[ModificaSettoreService::execute]  "
					+ e.getMessage(), e);
			throw new WebServiceException(e.getMessage());
		}finally{
			log.info("[ModificaSettoreService::execute] END");
		}
	}

}
